package com.bnz.controller;

import com.alibaba.dubbo.config.annotation.Reference;
import com.bnz.entity.Classes;
import com.bnz.entity.Student;
import com.bnz.service.ClassesService;
import com.bnz.service.StudentService;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;

import java.util.List;

@Controller
@RequestMapping("student1")
public class FmStudentController {

    @Reference  // 从zookeeper注册中心里取服务
    private StudentService studentService;
    @Reference
    private ClassesService classesService;

    /**
     * 1、查看学生列表
     */
    @GetMapping("list")
    public String findAll(Model model){
        System.out.println("主界面运行");
        // 1.1、查询学生的全部数据
        List<Student> all = studentService.findAll();
        // 1.2、将查到的全部学生数据放进model中
        model.addAttribute("students",all);
        // 1.3、查询全部班级
        List<Classes> classes = classesService.findAll();
        // 1.4、将查到的全部班级数据放进model中
        model.addAttribute("classes",classes);
        // 1.5、返回逻辑视图名(这里是webapp/WEB-INF/tpl/student/list.ftl)
        // 前缀，尾缀 springmvc.xml文件配置了
        return "/student/list";
    }

    /**
     * 2、添加学生
     */
    @RequestMapping("add")
    public String add(Student student){
        // 2.1、将数据添加到数据库
        studentService.add(student);
        // 2.2、返回逻辑视图名
        return "redirect:/student1/list.do";
    }

    /**
     * 3、修改数据
     */
    @RequestMapping("update")
    public String update(Student student){
        // 3.1、对数据进行修改
        studentService.update(student);
        // 3.2、返回逻辑视图名
        return "redirect:/student1/list.do";
    }

    /**
     * 4、删除--根据id
     */
    @RequestMapping("delete")
    private String delete(Integer sid){
        // 4.1、根据id进行删除
        studentService.delete(sid);
        // 4.2、返回逻辑视图
        return "redirect:/student1/list.do";
    }

    /**
     * 5、用来测试拦截器
     */
    @RequestMapping("aa")
    @ResponseBody
    public void testin(){
        System.out.println("自己写的拦截器测试方法");
    }

}
